From 6bf10dc0679956119cc27899f3470e4498ebeae6 Mon Sep 17 00:00:00 2001 From: robertl Date: Thu, 19 Sep 2002 01:57:15 +0000 Subject: [PATCH] Misc code cleanups from Alex. --- gpsbabel/csv.c | 1 + gpsbabel/csv_util.c | 8 ++--- gpsbabel/mxf.c | 5 ++- gpsbabel/ozi.c | 6 ++-- gpsbabel/psp.c | 14 +++++++- gpsbabel/testo | 85 +++++++++++++++++++++++++-------------------- 6 files changed, 72 insertions(+), 47 deletions(-) diff --git a/gpsbabel/csv.c b/gpsbabel/csv.c index 8358b698f..e2b74404f 100644 --- a/gpsbabel/csv.c +++ b/gpsbabel/csv.c @@ -122,6 +122,7 @@ gpsutil_disp(waypoint *wpt) lon = wpt->position.longitude.degrees; lat = wpt->position.latitude.degrees; + if (wpt->description) wpt->description = csv_stringclean(wpt->description, ",\""); diff --git a/gpsbabel/csv_util.c b/gpsbabel/csv_util.c index 35e18bd5e..fe0b440b0 100644 --- a/gpsbabel/csv_util.c +++ b/gpsbabel/csv_util.c @@ -47,9 +47,8 @@ csv_stringclean(char *string, const char *chararray) { while (*lp) lp++; cp = chararray; - while (*cp) { - + while (*cp) { p = string; while (*p) { if (*cp == *p) { @@ -64,7 +63,6 @@ csv_stringclean(char *string, const char *chararray) { return (string); } - /***********************************************************************************/ /* csv_stringtrim() - trim whitespace and leading and trailing enclosures (quotes) */ /* returns MODIFIED string. */ @@ -160,11 +158,11 @@ csv_lineparse(char *stringstart, const char *delimited_by, /* length of delimiters and enclosures */ dlen = strlen(delimited_by); elen = strlen(enclosed_in); - + dfound = 0; while ((*p) && (!dfound)) { - if (strncmp(p, enclosed_in, elen) == 0) { + if ((elen) && (strncmp(p, enclosed_in, elen) == 0)) { if (enclosedepth) enclosedepth--; else diff --git a/gpsbabel/mxf.c b/gpsbabel/mxf.c index 2641bcb1e..ca062349e 100644 --- a/gpsbabel/mxf.c +++ b/gpsbabel/mxf.c @@ -104,7 +104,7 @@ data_read(void) break; case 3: wpt_tmp->shortname = xstrdup(s); - csv_stringtrim(wpt_tmp->shortname, ""); + wpt_tmp->shortname = csv_stringtrim(wpt_tmp->shortname, ""); break; case 4: /* ignore. another name-type */ @@ -148,7 +148,10 @@ mxf_disp(waypoint * wpt) const char *color_hex = "ff0000"; csv_stringclean(wpt->shortname, ",\""); + wpt->shortname = csv_stringtrim(wpt->shortname, ""); + csv_stringclean(wpt->description, ",\""); + wpt->description = csv_stringtrim(wpt->description, ""); fprintf(file_out, "%08.5f, %08.5f, \"%s\", \"%s\", \"%s\", %s, %d\n", wpt->position.latitude.degrees, wpt->position.longitude.degrees, diff --git a/gpsbabel/ozi.c b/gpsbabel/ozi.c index 91f0bd2e4..e64a69a39 100644 --- a/gpsbabel/ozi.c +++ b/gpsbabel/ozi.c @@ -85,7 +85,7 @@ data_read(void) /* data delimited by commas, possibly enclosed in quotes. */ s = buff; - s = csv_lineparse(s, ",", "\"", linecount); + s = csv_lineparse(s, ",", "", linecount); i = 0; while (s) { @@ -96,7 +96,7 @@ data_read(void) case 1: /* waypoint name */ wpt_tmp->shortname = xstrdup(s); - csv_stringtrim(wpt_tmp->shortname, ""); + wpt_tmp->shortname = csv_stringtrim(wpt_tmp->shortname, ""); break; case 2: /* degrees latitude */ @@ -161,7 +161,7 @@ data_read(void) } i++; - s = csv_lineparse(NULL, ",", "\"", linecount); + s = csv_lineparse(NULL, ",", "", linecount); } waypt_add(wpt_tmp); diff --git a/gpsbabel/psp.c b/gpsbabel/psp.c index 826ec6418..32941e394 100644 --- a/gpsbabel/psp.c +++ b/gpsbabel/psp.c @@ -240,6 +240,18 @@ psp_disp(waypoint *wpt) char c; int i; + /* this output format pretty much requires a description and a shortname */ + if (!wpt->shortname) { + if (wpt->description) + wpt->shortname = xstrdup(wpt->description); + else + wpt->shortname = xstrdup(""); + } + if (!wpt->description) { + wpt->description = xstrdup(wpt->shortname); + } + + /* convert lat/long back to radians */ lat = (wpt->position.latitude.degrees * M_PI) / 180.0; lon = (wpt->position.longitude.degrees * M_PI) / 180.0; @@ -285,8 +297,8 @@ psp_disp(waypoint *wpt) fwrite(&tbuf[0], 1, 1, psp_file_out); /* null */ } - /* 1 byte string size */ c = strlen(wpt->description); + /* 1 byte string size */ fwrite(&c, 1, 1, psp_file_out); for (i = 0 ; wpt->description[i] ; i++) { diff --git a/gpsbabel/testo b/gpsbabel/testo index 0b2c73d99..90777e20b 100755 --- a/gpsbabel/testo +++ b/gpsbabel/testo @@ -1,38 +1,43 @@ + PNAME=./gpsbabel +TMPDIR=/tmp/gpsbabel.$$ +mkdir -p $TMPDIR +trap "rm -fr $TMPDIR" 0 1 2 3 15 + # Geocaching .loc -rm -f /tmp/gl.loc -${PNAME} -i geo -f geocaching.loc -o geo -F /tmp/gl.loc -diff /tmp/gl.loc reference +rm -f ${TMPDIR}/gl.loc +${PNAME} -i geo -f geocaching.loc -o geo -F ${TMPDIR}/gl.loc +diff ${TMPDIR}/gl.loc reference # GPSUtil -rm -f /tmp/gu.wpt -${PNAME} -i geo -f geocaching.loc -o gpsutil -F /tmp/gu.wpt -diff /tmp/gu.wpt reference +rm -f ${TMPDIR}/gu.wpt +${PNAME} -i geo -f geocaching.loc -o gpsutil -F ${TMPDIR}/gu.wpt +diff ${TMPDIR}/gu.wpt reference # GPSman -rm -f /tmp/gm.gm /tmp/gm.gm+ -${PNAME} -i geo -f geocaching.loc -o gpsman -F /tmp/gm.gm -${PNAME} -i gpsman -f /tmp/gm.gm -o gpsutil -F /tmp/gm.gm+ -diff /tmp/gm.gm+ /tmp/gu.wpt +rm -f ${TMPDIR}/gm.gm ${TMPDIR}/gm.gm+ +${PNAME} -i geo -f geocaching.loc -o gpsman -F ${TMPDIR}/gm.gm +${PNAME} -i gpsman -f ${TMPDIR}/gm.gm -o gpsutil -F ${TMPDIR}/gm.gm+ +diff ${TMPDIR}/gm.gm+ ${TMPDIR}/gu.wpt # GPX -rm -f /tmp/gl.gpx /tmp/gpx.gpx -${PNAME} -i geo -f geocaching.loc -o gpx -F /tmp/gl.gpx -${PNAME} -i gpx -f /tmp/gl.gpx -o gpsutil -F /tmp/gpx.gpx -diff /tmp/gpx.gpx /tmp/gu.wpt +rm -f ${TMPDIR}/gl.gpx ${TMPDIR}/gpx.gpx +${PNAME} -i geo -f geocaching.loc -o gpx -F ${TMPDIR}/gl.gpx +${PNAME} -i gpx -f ${TMPDIR}/gl.gpx -o gpsutil -F ${TMPDIR}/gpx.gpx +diff ${TMPDIR}/gpx.gpx ${TMPDIR}/gu.wpt # Magellan Mapsend -rm -f /tmp/mm.mapsend /tmp/mm.gps -${PNAME} -i geo -f geocaching.loc -o mapsend -F /tmp/mm.mapsend -${PNAME} -i mapsend -f /tmp/mm.mapsend -o gpsutil -F /tmp/mm.gps -diff /tmp/mm.gps /tmp/gu.wpt +rm -f ${TMPDIR}/mm.mapsend ${TMPDIR}/mm.gps +${PNAME} -i geo -f geocaching.loc -o mapsend -F ${TMPDIR}/mm.mapsend +${PNAME} -i mapsend -f ${TMPDIR}/mm.mapsend -o gpsutil -F ${TMPDIR}/mm.gps +diff ${TMPDIR}/mm.gps ${TMPDIR}/gu.wpt # Garmin Mapsource -rm -f /tmp/mm.mapsource /tmp/ms.gps -#${PNAME} -i geo -f geocaching.loc -o mapsource -F /tmp/mm.mapsource -#${PNAME} -i mapsource -f /tmp/mm.mapsource -o gpsutil -F /tmp/ms.gps -# diff /tmp/ms.gps /tmp/gu.wpt +rm -f ${TMPDIR}/mm.mapsource ${TMPDIR}/ms.gps +#${PNAME} -i geo -f geocaching.loc -o mapsource -F ${TMPDIR}/mm.mapsource +#${PNAME} -i mapsource -f ${TMPDIR}/mm.mapsource -o gpsutil -F ${TMPDIR}/ms.gps +# diff ${TMPDIR}/ms.gps ${TMPDIR}/gu.wpt # Magellan serial # TODO @@ -40,29 +45,35 @@ rm -f /tmp/mm.mapsource /tmp/ms.gps # CSV (Comma separated value) data. -#${PNAME} -i geo -f geocaching.loc -o csv -F /tmp/csv.csv -#${PNAME} -i csv -f /tmp/csv.csv -o gpsutil -F /tmp/csv2.csv -#diff /tmp/csv2.csv /tmp/gu.wpt +#${PNAME} -i geo -f geocaching.loc -o csv -F ${TMPDIR}/csv.csv +#${PNAME} -i csv -f ${TMPDIR}/csv.csv -o gpsutil -F ${TMPDIR}/csv2.csv +#diff ${TMPDIR}/csv2.csv ${TMPDIR}/gu.wpt # PCX (Garmin mapsource import) file format -rm -f /tmp/mm.pcx /tmp/pcx.gps -${PNAME} -i geo -f geocaching.loc -o pcx -F /tmp/mm.pcx -${PNAME} -i pcx -f /tmp/mm.pcx -o gpsutil -F /tmp/pcx.gps -diff /tmp/mm.gps /tmp/gu.wpt +rm -f ${TMPDIR}/mm.pcx ${TMPDIR}/pcx.gps +${PNAME} -i geo -f geocaching.loc -o pcx -F ${TMPDIR}/mm.pcx +${PNAME} -i pcx -f ${TMPDIR}/mm.pcx -o gpsutil -F ${TMPDIR}/pcx.gps +diff ${TMPDIR}/mm.gps ${TMPDIR}/gu.wpt # Magellan file format -${PNAME} -i magellan -f reference/magfile -o magellan -F /tmp/magfile -diff /tmp/magfile reference/magfile +${PNAME} -i magellan -f reference/magfile -o magellan -F ${TMPDIR}/magfile +diff ${TMPDIR}/magfile reference/magfile # PSP (PocketStreets 2002 Pushpin (.PSP)) file format -${PNAME} -i geo -f geocaching.loc -o psp -F /tmp/ps.psp -diff /tmp/ps.psp reference +rm -f ${TMPDIR}/ps.psp ${TMPDIR}/psp.psp +${PNAME} -i psp -f reference/ps.psp -o psp -F ${TMPDIR}/psp.psp +${PNAME} -i psp -f ${TMPDIR}/psp.psp -o psp -F ${TMPDIR}/ps.psp +diff ${TMPDIR}/ps.psp reference # MXF (Maptech Exchange Format) file format -${PNAME} -i geo -f geocaching.loc -o mxf -F /tmp/mxf.mxf -diff /tmp/mxf.mxf reference +rm -f ${TMPDIR}/mx.mxf ${TMPDIR}/mxf.mxf +${PNAME} -i mxf -f reference/mxf.mxf -o mxf -F ${TMPDIR}/mx.mxf +${PNAME} -i mxf -f ${TMPDIR}/mx.mxf -o mxf -F ${TMPDIR}/mxf.mxf +diff ${TMPDIR}/mxf.mxf reference # OZI (OziExplorer 1.1) file format -${PNAME} -i geo -f geocaching.loc -o ozi -F /tmp/ozi.ozi -diff /tmp/ozi.ozi reference +rm -f ${TMPDIR}/oz.ozi ${TMPDIR}/ozi.ozi +${PNAME} -i ozi -f reference/ozi.ozi -o ozi -F ${TMPDIR}/oz.ozi +${PNAME} -i ozi -f ${TMPDIR}/oz.ozi -o ozi -F ${TMPDIR}/ozi.ozi +diff ${TMPDIR}/ozi.ozi reference -- 2.30.2